﻿using Kugar.Core.BaseStruct;
using Newtonsoft.Json.Linq;

namespace Kugar.Tool.DataSync
{
    /// <summary>
    /// 导出数据的插件
    /// </summary>
    public interface IExporterPlugin
    {
        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="targetID">目标ID(客户ID)</param>
        /// <param name="dataTypeName">数据类型名称</param>
        /// <param name="data">将要导出的数据</param>
        /// <returns>返回是否导出成功,如果导出错误,则返回错误类型</returns>
        ResultReturn ExportUpdate(string targetID, string dataTypeName, JObject data);

        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="targetID">目标ID(客户ID)</param>
        /// <param name="dataTypeName">数据类型名称</param>
        /// <param name="data">将要导出的数据</param>
        /// <returns>返回是否导出成功,如果导出错误,则返回错误类型</returns>
        ResultReturn ExportAdd(string targetID, string dataTypeName, JObject data);


        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="targetID">目标ID(客户ID)</param>
        /// <param name="dataTypeName">数据类型名称</param>
        /// <param name="data">将要导出的数据</param>
        /// <returns>返回是否导出成功,如果导出错误,则返回错误类型</returns>
        ResultReturn ExportDelete(string targetID, string dataTypeName, JObject data);



        /// <summary>
        /// 该插件能处理的目标类型(客户ID)
        /// </summary>
        string[] TargetID { get; }

        /// <summary>
        /// 该插件能处理的数据类型名称
        /// </summary>
        string[] ExportDataTypeNames { get; }
    }
}